gusucode.com > GUI界面实现语音增强matlab源码程序 > speech enhancement/mmse_g.m
function y=mmse_g(x,n) %this function complete speech enhancement with mmse ; % n is the number of a speech frame; %clear; sample=n; a=0.6; b=5; %[y,fs,bit]=wavread('G:\5.wav'); N=ceil(length(x)/sample); noise=prepower(x,15,sample,2); j=N*sample; for k=1:sample, if(j>length(x)), x(j)=0; j=j-1; end; end; state=0; for k=1:N-1, for n=1:sample, z(n)=x((k-1)*sample+n); end; Y=fft(z,sample); phase=angle(Y); Y=sum2(Y,2); r=Y/noise; if(state>0), r_e=max((1-a)*r/b+a*r_e_last,1+0.005); else r_e=max((1-a)*r/b,1+0.005); end; u_e=r_e-1; r_e_last=r_e; state=state+1; u_e=u_e./(1+u_e); A=u_e.*(Y.^0.5); S=A.*exp(i*phase); s((k-1)*sample+1:((k-1)*sample+sample))=ifft(S,sample); end; y=s; %wavwrite(s,fs,bit,'G:\9.wav');